// art-template  (不仅可以在浏览器端使用，也可以在服务器端应用)
// 在node中的使用方法
/*
var template = require("art-template");

var tpl = template.render("我的名字是：{{ name }}", {
    name: "skyler"
})
console.log(tpl)
*/

// 字符串可以通过fs读取文件，因此使用fs读取文件并作为template.render函数传入


const http = require('http');
const fs = require("fs");
const path = require("path");
const template = require("art-template");
const DIRNAME = __dirname;
// 创建http服务器
const server = http.createServer();
server.on("request", function (req, res) {
    let url = req.url;
    // if(url === "/"){
    //     res.end("Hello world!")
    // } else {
    //     res.end("404 not found")
    // }
    var $index = new RegExp(/\.(index)$/);
    var $txt = new RegExp(/\.(txt)$/);
    var $img = new RegExp(/\.(jpg|png|gif)$/);
    // 什么都不加 就直接显示文件目录
    let content = "";
    let filepath = url;
    if (url === "/" || url.indexOf(".") === -1) {
        // var files = fs.readdirSync(getPath(url), {})

        // 使用模板字符串来渲染tr td来创建表格
        // files.forEach((item) => {
        //     content += `
        //         <tr>
        //             <td data-value="apple/"><a class="icon dir" href="/${item}">${item}</a>
        //             </td>
        //             <td class="detailsColumn" data-value="0"></td>
        //             <td class="detailsColumn" data-value="1587734116">2020/4/24 下午9:15:16</td>
        //         </tr>
        //         `
        // })
        filepath = "/template.html";
    }

    fs.readFile(getPath(filepath), function (err, data) {
        if (err) {
            res.end("404 not found!");
            return;
        }
        if (filepath === "/template.html") {
            // data = data.toString().replace("^_^", content);
            // 使用模板引擎渲染template.html字符串  也叫服务端渲染
            let files = fs.readdirSync(getPath(url), { encoding: "utf-8" });
            data = template.render(data.toString(), {
                files: files
            })
        } else if ($index.test(url)) {
            res.writeHead(200, { 'Content-Type': 'text/html', 'charset': 'UTF-8' })
        } else if ($txt.test(url)) {
            res.writeHead(200, { 'Content-Type': 'text/plain', 'charset': 'UTF-8' })
        } else if ($img.test(url)) {
            res.writeHead(200, {})
        }
        res.end(data);
    })
})

function getPath(url) {
    return path.resolve(DIRNAME, "../www" + url);
}
// 监听端口
server.listen(4000, function (err) {
    console.log("listening 4000");
})
